#ifndef RENDERTARGET_H
#define RENDERTARGET_H

#include "Framework/Types.h"
#include "Camera/Camera.h"
#include "Math/Matrix4.h"


namespace tyro
{
	namespace Graphics
	{

		class IViewport;

		class IRenderTarget
		{
		public:
			
			inline 				IRenderTarget();
			virtual				~IRenderTarget(){}

			inline bool	Initialise(UINT_32 width, UINT_32 height);

			virtual UINT_32 getHeight(void) const;
			virtual UINT_32 getWidth(void) const;
			virtual UINT_32 getColourDepth(void) const;
			
			virtual void Update();
			virtual void UpdateViewport(IViewport* viewport);
			virtual IViewport* AddViewport(Camera::Camera* cam, int ZOrder = 0, float left = 0.0f, float top = 0.0f ,
				float width = 1.0f, float height = 1.0f);


		protected:

			friend class IRenderEngine;

			virtual void swapBuffers();
			

			inline virtual bool Begin(){ return false; }
			inline virtual void	End(){}
			
			IViewport* activeViewport;
			UINT_32	width;
			UINT_32 height;
			UINT_32 colourDepth;
		};

	
		inline IRenderTarget::IRenderTarget()
		{
		}


		inline bool IRenderTarget::Initialise(tyro::UINT_32 width, tyro::UINT_32 height)
		{
			return false;
		}

	}
}

#endif